package com.weblog.weblog.common.domain.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.weblog.weblog.common.domain.dos.ArticleCategoryRelDO;
import com.weblog.weblog.common.domain.dos.ArticleTagRelDO;

import java.util.List;

/**
 * @author gc
 * @date 2023年10月13日 13:47
 */

public interface ArticleCategoryRelMapper extends BaseMapper<ArticleCategoryRelDO> {
    /*
     * 根据文章 ID 删除关联记录
     * @author gc
     * @date 2023/10/15 21:14
     * @param articleId
     * @return int
     */
    default int deleteByArticleId(Long articleId) {
        return delete(Wrappers.<ArticleCategoryRelDO>lambdaQuery()
                .eq(ArticleCategoryRelDO::getArticleId, articleId));
    }
    /*
     * 根据文章 ID 查询
     * @author gc
     * @date 2023/10/15 21:13
     * @param null
     * @return null
     */

    default ArticleCategoryRelDO selectByArticleId(Long articleId){
        return selectOne(Wrappers.<ArticleCategoryRelDO>lambdaQuery()
                .eq(ArticleCategoryRelDO::getArticleId,articleId));
    }

    /*
     * 根据分类 ID 查询
     * @author gc
     * @date 2023/10/19 16:49
     * @param null
     * @return null
     */

    default ArticleCategoryRelDO selectOneByCategoryId(Long categoryId){
        return selectOne(Wrappers.<ArticleCategoryRelDO> lambdaQuery()
                .eq(ArticleCategoryRelDO::getCategoryId,categoryId)
                .last("LIMIT 1"));
    }

    /**
     * 根据文章 ID 集合批量查询
     */
    default List<ArticleCategoryRelDO> selectByArticleIds(List<Long> articleIds) {
        return selectList(Wrappers.<ArticleCategoryRelDO>lambdaQuery()
                .in(ArticleCategoryRelDO::getArticleId, articleIds));
    }

    /**
     * 根据分类ID 查询所有关联记录
     */
    default List<ArticleCategoryRelDO> selectListByCategoryId(Long categoryId){
        return selectList(Wrappers.<ArticleCategoryRelDO> lambdaQuery()
                .eq(ArticleCategoryRelDO::getCategoryId,categoryId));

    }
}
